#ifndef TESTER_H
#define TESTER_H

#include <list>

#include "MemoryManager.h"
#include "Funcion.h"
#include "CasoDeTest.h"
#include "FuncionesAuxiliares.h"
#include "DonInclude.h"
#include "FuncionesModificadas.h"
#include "Medidor.h"

class Tester {

public:

    static MemoryManager mmFuncion;
    static MemoryManager mmParametros;

    Tester();

    int main(const char* nombreArchivoDefinicion, ostream& out = std::cout);

    virtual ~Tester() {}

protected:

    void ejecutarCasosDeTest(ostream& out);
    bool ejecutarCasoDeTest(CasoDeTest& casoDeTest, ostream& out);

    Funcion             _funcion;
    list<CasoDeTest>    _casosDeTest;
    Medidor             _medidor;

    void agregarCasoDeTest(CasoDeTest& casoDeTest);

    virtual void configurarTest(){}
    virtual void finalizarTest(){}
    virtual void armarCasosDeTest(){}

};

#endif // TESTER_H
